Internet of Things (IoT) Gateway Flow Engine Optimizer And Configuration Distribution

ABSTRACT

A single Internet of Things (IoT) gateway flow computer (either on a gateway machine or a non-gateway machine) that controls flow through both of the following types of gateways: (i) cloud gateways; and (ii) edge gateways. Both overall configuration and sub-configuration are automatically and dynamically controlled by the single, system-wide IoT gateway flow computer.

BACKGROUND

The present invention relates generally to the field of configuration ofwork flows through gateways, and more particularly configuring overallwork flow and sub-configuration of work flows through IoT (“Internet ofThings”) gateways.

Edge computing is known. Edge computing is a distributed computingparadigm in which computation is typically largely, or completely,performed on distributed device nodes known as “smart devices” or “edgedevices” as opposed to primarily taking place in a centralized cloudenvironment. “Edge” here refers to the geographic distribution ofcomputing nodes in the network as IoT devices, which are at the “edge”of an enterprise, local area or other network. Edge computing can helpprovide server resources, data analysis and artificial intelligence(“ambient intelligence”) closer to data collection sources and systemssuch as smart sensors and smart actuators.

An edge gateway (as that term is used herein) is defined as a piece ofnetworking hardware used in telecommunications for telecommunicationsnetworks that allows data to flow from a set of edge computing device(s)to a discrete network. Edge gateways are distinct from routers orswitches in that they typically communicate using more than one protocoland can operate at any of the seven (7) layers of the OSI (open systemsinterconnection) model. The term “edge gateway” also may refer to acomputer or computer program configured to perform the tasks of agateway, such as a default gateway or router.

A “cloud” is herein used to mean a discrete network of computing devicesthat exists primary to provide computing services, such as use ofvirtual machine(s), container(s) and their underlying physical computingresources.

A cloud gateway is any physical device and/or code running on a physicaldevice that communicates data between two discrete clouds.

Today we have millions of devices are connected to cloud, and tens ofthousands of sensor data are transmitted to cloud for real-timemonitoring and analysis. As a result, IoT Gateway plays an importantrole in various scenario that help enterprise to manage these datatransmission. Cloud-based flow-engine (for example, NodeRed) has becomede facto way to compose IoT data flow in a visual way. These flowengines provide a rich set of logical/function components that allowdevelopers to easily bridge multiple systems together by chaining thedata flow. Data could be generated by sensors, applications, or anyexternal services.

SUMMARY

According to an aspect of the present invention, there is a method,computer program product and/or system that performs the followingoperations (not necessarily in the following order): (i) deploying ahybrid Internet of Things (IoT) gateway architecture including aplurality of cloud gateways and a plurality of edge gateways; (ii)configuring, by a user and through a centralized/unified flow engineinterface implemented on a centralized IoT gateway flow computer, a setof overall workflow(s) for the hybrid IoT gateway architecture; (iii)assigning, dynamically and automatically, a set of sub-configuration(s);and (iv) deploying, dynamically and automatically, the set ofsub-configuration(s) to the plurality of cloud gateways and theplurality of edge gateways.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram view of a first embodiment of a systemaccording to the present invention;

FIG. 2 is a flowchart showing a first embodiment method performed, atleast in part, by the first embodiment system;

FIG. 3 is a block diagram showing a machine logic (for example,software) portion of the first embodiment system;

FIG. 4 is a screenshot view generated by the first embodiment system;

FIG. 5 is flow diagram according to a second embodiment of a methodaccording to the present invention;

FIG. 6 is a block diagram view of a second embodiment of a systemaccording to the present invention;

FIG. 7 is a block diagram view of a third embodiment of a systemaccording to the present invention;

FIG. 8 is a block diagram view of a fourth embodiment of a systemaccording to the present invention;

FIG. 9 an original high level flow diagram according to a thirdembodiment of a method according to the present invention;

FIG. 10 an optimized distributed flow diagram according to a fourthembodiment of a method according to the present invention;

FIG. 11 a flow chart showing a fifth embodiment of a method according tothe present invention; and

FIG. 12 a flow chart showing a sixth embodiment of a method according tothe present invention.

DETAILED DESCRIPTION

Some embodiments of the present invention are directed to a singleInternet of Things (IoT) gateway flow computer (either on a gatewaymachine or a non-gateway machine) that controls flow through both of thefollowing types of gateways: (i) cloud gateways; and (ii) edge gateways.Both overall configuration and sub-configuration are automatically anddynamically controlled by the single, system-wide IoT gateway flowcomputer. This Detailed Description section is divided into thefollowing sub-sections: (i) The Hardware and Software Environment; (ii)Example Embodiment; (iii) Further Comments and/or Embodiments; and (iv)Definitions.

I. THE HARDWARE AND SOFTWARE ENVIRONMENT

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Smalltalk, C++ or the like, andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

An embodiment of a possible hardware and software environment forsoftware and/or methods according to the present invention will now bedescribed in detail with reference to the Figures. FIG. 1 is afunctional block diagram illustrating various portions of networkedcomputers system 100, including: centralized IoT gateway flow sub-system102; cloud gateway A 104; cloud A 105; cloud gateway B 106; cloud B 107;cloud gateway C 108; cloud C 109; edge gateway A 110; set of IoT edgedevice(s) A 111; edge gateway B 112; set of IoT edge device(s) B 113;communication network 114; centralized IoT gateway flow computer 200;communication unit 202; processor set 204; input/output (I/O) interfaceset 206; memory device 208; persistent storage device 210; displaydevice 212; external device set 214; random access memory (RAM) devices230; cache memory device 232; and program 300.

Sub-system 102 is, in many respects, representative of the variouscomputer sub-system(s) in the present invention. Accordingly, severalportions of sub-system 102 will now be discussed in the followingparagraphs.

Sub-system 102 may be a laptop computer, tablet computer, netbookcomputer, personal computer (PC), a desktop computer, a personal digitalassistant (PDA), a smart phone, or any programmable electronic devicecapable of communicating with the client sub-systems via network 114.Program 300 is a collection of machine readable instructions and/or datathat is used to create, manage and control certain software functionsthat will be discussed in detail, below, in the Example Embodimentsub-section of this Detailed Description section.

Sub-system 102 is capable of communicating with other computersub-systems via network 114. Network 114 can be, for example, a localarea network (LAN), a wide area network (WAN) such as the Internet, or acombination of the two, and can include wired, wireless, or fiber opticconnections. In general, network 114 can be any combination ofconnections and protocols that will support communications betweenserver and client sub-systems.

Sub-system 102 is shown as a block diagram with many double arrows.These double arrows (no separate reference numerals) represent acommunications fabric, which provides communications between variouscomponents of sub-system 102. This communications fabric can beimplemented with any architecture designed for passing data and/orcontrol information between processors (such as microprocessors,communications and network processors, etc.), system memory, peripheraldevices, and any other hardware components within a system. For example,the communications fabric can be implemented, at least in part, with oneor more buses.

Memory 208 and persistent storage 210 are computer-readable storagemedia. In general, memory 208 can include any suitable volatile ornon-volatile computer-readable storage media. It is further noted that,now and/or in the near future: (i) external device(s) 214 may be able tosupply, some or all, memory for sub-system 102; and/or (ii) devicesexternal to sub-system 102 may be able to provide memory for sub-system102.

Program 300 is stored in persistent storage 210 for access and/orexecution by one or more of the respective computer processors 204,usually through one or more memories of memory 208. Persistent storage210: (i) is at least more persistent than a signal in transit; (ii)stores the program (including its soft logic and/or data), on a tangiblemedium (such as magnetic or optical domains); and (iii) is substantiallyless persistent than permanent storage. Alternatively, data storage maybe more persistent and/or permanent than the type of storage provided bypersistent storage 210.

Program 300 may include both machine readable and performableinstructions and/or substantive data (that is, the type of data storedin a database). In this particular embodiment, persistent storage 210includes a magnetic hard disk drive. To name some possible variations,persistent storage 210 may include a solid state hard drive, asemiconductor storage device, read-only memory (ROM), erasableprogrammable read-only memory (EPROM), flash memory, or any othercomputer-readable storage media that is capable of storing programinstructions or digital information.

The media used by persistent storage 210 may also be removable. Forexample, a removable hard drive may be used for persistent storage 210.Other examples include optical and magnetic disks, thumb drives, andsmart cards that are inserted into a drive for transfer onto anothercomputer-readable storage medium that is also part of persistent storage210.

Communications unit 202, in these examples, provides for communicationswith other data processing systems or devices external to sub-system102. In these examples, communications unit 202 includes one or morenetwork interface cards. Communications unit 202 may providecommunications through the use of either or both physical and wirelesscommunications links. Any software modules discussed herein may bedownloaded to a persistent storage device (such as persistent storagedevice 210) through a communications unit (such as communications unit202).

I/O interface set 206 allows for input and output of data with otherdevices that may be connected locally in data communication with servercomputer 200. For example, I/O interface set 206 provides a connectionto external device set 214. External device set 214 will typicallyinclude devices such as a keyboard, keypad, a touch screen, and/or someother suitable input device. External device set 214 can also includeportable computer-readable storage media such as, for example, thumbdrives, portable optical or magnetic disks, and memory cards. Softwareand data used to practice embodiments of the present invention, forexample, program 300, can be stored on such portable computer-readablestorage media. In these embodiments the relevant software may (or maynot) be loaded, in whole or in part, onto persistent storage device 210via I/O interface set 206. I/O interface set 206 also connects in datacommunication with display device 212.

Display device 212 provides a mechanism to display data to a user andmay be, for example, a computer monitor or a smart phone display screen.

The programs described herein are identified based upon the applicationfor which they are implemented in a specific embodiment of theinvention. However, it should be appreciated that any particular programnomenclature herein is used merely for convenience, and thus theinvention should not be limited to use solely in any specificapplication identified and/or implied by such nomenclature.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration but are not intended tobe exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the describedembodiments. The terminology used herein was chosen to best explain theprinciples of the embodiments, the practical application or technicalimprovement over technologies found in the marketplace, or to enableothers of ordinary skill in the art to understand the embodimentsdisclosed herein.

II. EXAMPLE EMBODIMENT

FIG. 2 shows flowchart 250 depicting a method according to the presentinvention. FIG. 3 shows program 300 for performing at least some of themethod operations of flowchart 250. This method and associated softwarewill now be discussed, over the course of the following paragraphs, withextensive reference to FIG. 2 (for the method operation blocks) and FIG.3 (for the software blocks).

Processing begins at operation S255, where the following gateways aredeployed: edge gateway A 110 and edge gateway B 112 (see FIG. 1). Thedeployment of these two edge gateways determines the initial edgegateway topology for networked computers system 100. At operation S255,the identities, physical locations and logical locations of thesedeployed edge gateways are sent to receive edge gateway deploymentsmodule (“mod”) 302.

Processing proceeds to operation S260, where the following gateways aredeployed: cloud gateway A 104; cloud gateway B 106; and cloud gateway C108 (see FIG. 1). The deployment of these three (3) cloud gatewaysdetermines the initial cloud gateway topology for networked computerssystem 100. At operation S260, the identities, physical locations andlogical locations of these deployed cloud gateways are sent to receivecloud gateway deployments module (“mod”) 304. Because program 300 hasnow received the initial deployment status for both the edge gatewaysand the cloud gateways, program 300 now has information on the entiregateway topology for networked computers system 100.

Processing proceeds to operation S265, where configure overall workflowsmod 306 configures overall work flows for and/or through networkedcomputers system 100. This configuration of overall work flows involvesthree (3) sub-operations as follows: (i) centralized IoT gateway dataflow configuration sub-mod 320 of configure overall work flows mod 306configures data flow for both the cloud gateways and the edge gateways,systemwide; (ii) intelligent configuration sub-mod 322 of configureoverall workflows mod 306 provides intelligent configurationdistribution for both the cloud gateways and the edge gateways,systemwide; and (iii) compile and optimize sub-mod 324 of configureoverall workflows mod 306 compiles and optimizes the overall work flowconfiguration for both the cloud gateways and the edge gateways,systemwide. The overall work flow configuration in this example is shownin the top portion of screenshot 400 of FIG. 4.

Processing proceeds to operation S270, where assign sub-configurationsmod 308 automatically assigns sub-configurations for use in networkedcomputers system 100. This configuration of sub-configurations involvesthree (3) sub-operations as follows: (i) centralized IoT gateway dataflow configuration sub-mod 330 of assign sub-configurations mod 308configures data flow for sub-configurations; (ii) intelligentconfiguration sub-mod 332 of assign sub-configurations mod 308 providesintelligent configuration distribution for the sub-configurations; and(iii) compile and optimize sub-mod 334 of assign sub-configurations mod308 compiles and optimizes the sub-configurations. An examplesub-configuration is shown at the bottom portion of screenshot 400 ofFIG. 4.

Processing proceeds to operation S275, where deploy sub-configurationsmod 310 deploys the overall work flow configuration and/or thesub-configuration(s) so that these can be used in networked computerssystem 100. Processing loops back to S255, where new gateways may beadded and/or removed from the system. By looping back through operationsS255 to S275, the process of optimizing configurations andsub-configurations involving both cloud gateways and edge gateways isdynamic (that is, performed intermittently and without substantial humanintervention).

III. FURTHER COMMENTS AND/OR EMBODIMENTS

Some embodiments of the present invention may recognize the followingfacts, potential problems and/or potential areas for improvement withrespect to the current state of the art: (i) unstable routing and theunderestimated throughput could lead the cloud based IoT gateway tobecome the bottleneck of the overall performance; (ii) today there is noconfiguration tools of cloud based IoT Gateway services that canblueprint the integration services of cloud gateway and edge gatewayunder the same revision control; (iii) management of IoT Gateways is noteasy—in particularly administrator has to explicitly configure bothcloud and edge gateway for them to work properly; (iv) flow enginescontrols the behavior of one runtime instance—they are the aggregatorand dispatcher of data flow; (v) however, edge computing and edgeanalytics is going to be a critical feature of most IoT solutions today,cloud-based flow engines alone can't satisfy most requirements; and/or(vi) in particular, High Availability of edge devices (for example, IoTrobot).

Some embodiments of the present invention may recognize the followingfacts, potential problems and/or potential areas for improvement withrespect to the current state of the art: (i) it is possible tointelligently compose and configure services/applications on gatewaydevices on edge computing platform and cloud computing platform based onresource availability for optimizing data analytics; (ii) it is possibleto distribute task(s) among cloud and edge gateways using a central edgecomputing node to process data associated with events generated by IoTdevices; and/or (iii) it is possible to split analytics services on edgecomputing platform and cloud computing platform based on traffic types,location information, processing delay and transmission overhead inorder to achieving the advantages of both cloud and edge computingplatforms.

Some embodiments of the present invention recognize the following facts,potential problems and/or potential areas for improvement with respectto the current state of the art: (i) intelligently composes andconfigures services and/or applications on gateway devices on edgecomputing platform(s) and cloud computing platform(s) based on resourceavailability for optimizing data analytics; (ii) distributes tasks amongcloud and edge gateways using a central edge computing node to processdata associated with events generated by IoT devices; and/or (iii)splits analytics services on edge computing platform(s) and cloudcomputing platform(s) based on traffic types, location information,processing delay, and transmission overhead in order to achieve theadvantages of both cloud and edge computing platforms.

Some embodiments of the present invention may include one, or more, ofthe following features, characteristics, operations and/or advantages:(i) system and method of IoT gateway flow engine optimizer andconfiguration distribution; (ii) handles the configuration effortrequired to manage both cloud and edge gateway when this effort is nottrivial; (iii) provides a unified flow control design interface thathelps enterprise customers to properly manage their IoT gateways, bothon cloud and edge; (iv) a unified IoT Gateway flow design framework thatincludes both edge gateway and cloud gateway functions; (v) from auser's perspective, it is not required to explicit specify whether aflow should run on cloud or on the edge; and/or (vi) for flows thatcould be handled by edge gateway locally, the system should be smartenough to assign and deploy the flow to local edge gateway.

Some embodiments of the present invention may include one, or more, ofthe following features, characteristics, operations and/or advantages:(i) a hybrid IoT gateway architecture; (ii) in this architecture, IoTgateway are deployed both on edges and cloud; (iii) the IoT Gatewayprovides a flow engine that allows a user to configure, and from user'sperspective she doesn't have to concern about whether the configurationwill be stored on edge IoT; (iv) gateway or cloud IoT gateway—the flowoptimization engine will assign proper configuration to right gatewaybased on overall topology of the system, as well as High-Availabilityrequirement from a user; (v) centralize IoT gateway data flowconfiguration and intelligent configuration distribution; and/or (vi) agateway flow system that will would compile and optimize configuration.

Diagram 600 of FIG. 6 shows a manageable gateway service environmentthat includes: encrypt IoT functional node 602; filter IoT functionalnode 604; visualize IoT functional node 606; dev devices 610, 612, 614;apps 620, 622, 624; manageable gateway service 630. Manageable gatewayservice 630 includes: edge gateway 632 and cloud gateway 634.

Diagram 700 of FIG. 7 shows system architecture according to anembodiment of the present invention, the system architecture including:edge gateways 632 a, b, c; and cloud gateway 634 a. Cloud gateway 634 aincludes: flow editor 640; flow optimizer 642; flow engine 644; andconfiguration dispatcher 646. In the architecture of diagram 700, thereis only one flow editor 640 on cloud gateway 634 a. When flows areconfigured, it is optimized by flow optimizer 642, which decides how theflow should be dispatched at which gateway (cloud or edge). After that,the final configurations are dispatched to their respective gateways 632a, b, c and 634 a. The flow engine on each gateway 644, 633 a, 633 b and633 c is responsible for executing the configured flow when data isreceived at runtime.

Diagram 800 of FIG. 8 shows a network topology according to anembodiment of the present invention, the network topology showing: cloudgateways 634 b, c; edge gateways 632 d, e, f; and edge gateway grouping802. As shown in diagram 800, edge gateway grouping 802 includes edgegateways 632 d and 632 e. Alternatively, edge gateway grouping 802 caninclude any combination of groupings involving edge gateways 632 d, e,f.

Optimized distributed flow diagram 1000 of FIG. 10 shows that duringdeployment stage, the process flow is automatically separated into edgegateway and cloud gateway as follows: (i) the Encryption service isautomatically spread into Encrypt and Decrypt services; (ii) when flowproceeds from the filter block to the device A block in FIG. 1000, theflow doesn't need to go to cloud gateway (edge-gateway-only); and (iii)when flow proceeds from the filter block to the device A block in FIG.1000, desired results can be obtained from the edge gateway immediately.

Some embodiments of the present invention may include one, or more, ofthe following features, characteristics, operations and/or advantages:(i) a hybrid IoT gateway architecture where IoT gateways can be deployedon different locations (for example, on edges and on cloud); (ii) thisarchitecture provides a centralized/unified flow engine interface thatallows users to configure the overall workflows and with the providedflow compiler and flow optimization engine; (iii) sub-configurationswill be assigned and deployed dynamically and automatically to thegateways of proper locations based on overall topology of the system;(iv) users do not have to manually break down the overall flowconfiguration and configure each gateway in different locationsaccordingly; (v) centralized IoT gateway data flow configuration andintelligent configuration distribution; and/or (vi) in gateway flowsystem that will would compile and optimize the configuration.

Flow chart 500 of FIG. 5 includes: configuration stage operation(s) 502;flow compilation stage operation(s) 504; and deployment stage operations506. Configuration stage operations 502 includes: flow configurationsblock 510; and device network topology block 512. Flow compilation stage504 includes: flow compiler 520; flow optimizer 522; and flowconfigurations blocks 524, 526, 528. Deployment stage operations 506include: cloud IoT gateway 530; edge IoT gateway 532; and edge IoTgateway 534. The method of flow chart 500 allows users to configure flowin a centralized place (specifically, a computer (not separately shown)hosting flow compiler 520 and flow optimizer 522). The flow compiler andthe flow optimizer generate appropriate configurations for cloud IoTgateway 530, edge IoT gateway 532 and edge IoT gateway 534. Someembodiments of the present invention may provide a special component(flow node) that simplifies configurational complexities for IoTdevices.

Flow diagram 900 of FIG. 9 shows possible flows according to anembodiment of the present invention. For example, let's assumeadministrator creates a gateway flow on the cloud which is shown by thearrow from the Device B block to the filter block to the Device A blockin diagram 900. This arrow means that what is filtered by node “filter”should send the filtered output to Device A from Device B. This flowactually does not need to go to a cloud gateway, so the flow optimizerwould maintain this flow on edge gateways and/or edge devices.

Optimized distributed flow diagram 1000 of FIG. 10 shows an optimizeddistributed flow according to an embodiment of the present invention. Insome embodiments of the present invention, implementation of a flowoptimization method (as depicted by the optimized distributed flow ofFIG. 10) includes the following: (i) a cloud service administratorcreates a global service flow with a unified Flow Editor program, whichincludes three main services: “Filter”, “Encryption”, and“Virtualization”; (ii) a Flow Optimizer program analyzes these threemain services and figures out that the “Encryption” service should beseparated into “Encrypt” and “Decrypt” sub-services; (iii) based on thedetermination that the “Encryption” service should be separated into“Encrypt” and “Decrypt” sub-services, these sub-services are to bedeployed to edge and cloud gateways respectively for runtime execution;(iv) Based on the “Encrypt” and “Decrypt” sub-services that weredetermined above, the Flow Optimizer program generates sub-flows thatare optimized to be executed on either edge or cloud (or both) gateways(for example, a given sub-flow (as shown here with respect to flowdiagram 1000) that performs a “filter” operation (and having an flowpath of Device B to “Filter” to Device A) only needs to be executed onedge gateways, and therefore does not need to be deployed on cloudgateways; (v) a configuration dispatcher deploys the generated sub-flowsto edge and cloud gateways accordingly; and (vi) these generatedsub-flows will be executed by the local flow engines at runtime.

FIG. 11 shows flow chart 1100 which is an embodiment of a methodaccording to the present invention that includes the followingoperations: S1102; S1104; S1106; S1108; S1110; S1112; S1114; S1116;S1118; and S1120. Process flow among and between these operations is asshown in FIG. 11.

Some embodiments of the present invention may include one, or more, ofthe following features, characteristics, operations and/or advantages:(i) greatly improves the efficiency and usability of could service flowsthat involve both the cloud and the edge sides; (ii) IBM solutions likeBluemix and DataPower gateway can benefit from this invention (forexample, the Bluemix Secure Gateway Service that can be deployed on bothBluemix cloud and DataPower on-premises gateways); (iii) by using theservice configuration process and examining the runtime service policyexecution results, it is easy to detect if the core idea of flow serviceoptimization is used; and/or (iv) support dynamic flow serviceconfiguration optimization and deployment at configuration/runtime.

Some embodiments of the present invention may include one, or more, ofthe following features, characteristics and/or advantages: (i) providesa general visual programming environment on the cloud; (ii) generatesoptimized flow policy based on the device topology and the devicecapability; (iii) generates and optimizes the overall flow policy; (iv)dynamically and automatically deploys sub-flow policies to other cloudand/or edge nodes based on the device topology and device capability;(v) deploys the overview framework to both the cloud and edge ends; (vi)deploys the framework based on the flow logic, network topology and thetype of operations in order to minimize the latency of each flow in theframework; (vii) deploys and configures IoT gateway workflows (such asservices and/or operations in the workflow) on edge computingplatform(s) and cloud computing platform(s); (viii) utilizes acentralized workflow engine to configure the overall workflow (or allsub-flows) and deploys the sub-flows to different gateways of properlocations (edge platform or cloud platform) based on overall topology ofthe system; (ix) utilizes a centralized workflow engine to configureoverall workflow (or all sub-flows); and/or (x) deploys the sub-flows todifferent gateways of proper locations (edge platform or cloud platform)based on overall topology of the system.

Embodiments of the present invention will now be discussed in referenceto FIG. 12. FIG. 12 shows flow diagram 1200 of an overall workflow for adesigned workflow. Flow diagram 1200 includes: design flow 1202, whichfurther includes action policies A, B, C, D and E; flow compiler 1204;device topology 1206, which includes nodes E1, E2, C1, C2, and C3; flowoptimizer 1208; policy generation 1210; policy dispatcher 1212;optimized flow 1214, which includes nodes E1, E2, C1, C2 and C3; andgenerated sub-flows 1216, which includes sub-flows A, A to B, A to B toC_(E), B, B to C_(E), CE, C_(D), C_(D) to D, C_(D) to E, D and E.

As shown in flow chart 1200 of FIG. 12, when implementing the actions ofthe workflow shown in design flow 1202, flow compiler 1204 analyzes theaction policies of the design flow and uses device topology 1206 as theoperating environment for the optimization of an overall workflow. Thenodes of device topology 1206 include information such as: (i) locationinformation (such as whether an action policy is located on an edgecomputer or a cloud computer), (ii) capability information of the edgeand cloud computing devices, and (iii) supported action information ofthe edge and cloud computing devices.

Flow optimizer disassembles the action policies of design flow 1202 andconverts these action policies into edge/cloud sub-action policies. Forexample, for the action policies A, B, C, D and E, a sub-action policycan include: (i) A, B to edge; (ii) C to C_(E) (where sub-policy actionC_(E) is encrypting data) and C_(D) (where sub-policy action C_(D) isdecrypting data); and (iii) D, E to cloud.

Policy generation 1210 generates all possible sub-workflows from thedesign workflow. Once the policy generation generates all possiblesub-workflows, policy dispatcher 1212 dispatches certain sub-workflowsto the nodes of the device topology (such as E1, E2, C1, C2 and C3)based upon the capabilities and location of the nodes. For example, nodeE2 is on an edge computer and supports actions A, B and C. Based uponthis information of node E2, the policy dispatcher will dispatch themost suitable sub-workflow (such as A to B to C_(E)) to node E2 in orderto utilize the availability of node E2. After the dispatch of the mostsuitable sub-workflow by the policy dispatch is complete, optimized flow1214 is deployed.

Some embodiments of the present invention may include one, or more, ofthe following features, characteristics and/or advantages: (i)automatically deploying and configuring IoT gateway workflows(services/operations in the workflow) on edge computing platform andcloud computing platform; (ii) utilizing a centralized workflow engineto configure overall workflow (or all sub-flows); and/or (iii) deployingthe sub-flows to different gateways of proper locations (such as edgeplatform or cloud platform) based on overall topology of the system.

IV. DEFINITIONS

Present invention: should not be taken as an absolute indication thatthe subject matter described by the term “present invention” is coveredby either the claims as they are filed, or by the claims that mayeventually issue after patent prosecution; while the term “presentinvention” is used to help the reader to get a general feel for whichdisclosures herein are believed to potentially be new, thisunderstanding, as indicated by use of the term “present invention,” istentative and provisional and subject to change over the course ofpatent prosecution as relevant information is developed and as theclaims are potentially amended.

Embodiment: see definition of “present invention” above—similar cautionsapply to the term “embodiment.”

and/or: inclusive or; for example, A, B “and/or” C means that at leastone of A or B or C is true and applicable.

Including/include/includes: unless otherwise explicitly noted, means“including but not necessarily limited to.”

User/subscriber: includes, but is not necessarily limited to, thefollowing: (i) a single individual human; (ii) an artificialintelligence entity with sufficient intelligence to act as a user orsubscriber; and/or (iii) a group of related users or subscribers.

Module/Sub-Module: any set of hardware, firmware and/or software thatoperatively works to do some kind of function, without regard to whetherthe module is: (i) in a single local proximity; (ii) distributed over awide area; (iii) in a single proximity within a larger piece of softwarecode; (iv) located within a single piece of software code; (v) locatedin a single storage device, memory or medium; (vi) mechanicallyconnected; (vii) electrically connected; and/or (viii) connected in datacommunication.

Computer: any device with significant data processing and/or machinereadable instruction reading capabilities including, but not limited to:desktop computers, mainframe computers, laptop computers,field-programmable gate array (FPGA) based devices, smart phones,personal digital assistants (PDAs), body-mounted or inserted computers,embedded device style computers, application-specific integrated circuit(ASIC) based devices.

What is claimed is:
 1. A computer implemented method (CIM) comprising:deploying a hybrid Internet of Things (IoT) gateway architectureincluding a plurality of cloud gateways and a plurality of edgegateways; configuring, by a user and through a centralized/unified flowengine interface implemented on a centralized IoT gateway flow computer,a set of overall workflow(s) for the hybrid IoT gateway architecture;assigning, dynamically and automatically, a set of sub-configuration(s);and deploying, dynamically and automatically, the set ofsub-configuration(s) to the plurality of cloud gateways and theplurality of edge gateways.
 2. The CIM of claim 1 wherein the dynamicand automatic assignment of the set of sub-configuration(s) is based onoverall topology of the system so that a single centralized IoT gatewayflow computer is used to configure all of the cloud gateways and all ofthe edge gateways in the hybrid IoT gateway architecture.
 3. The CIM ofclaim 1 wherein the configuration of the set of overall workflow(s)includes intelligent configuration distribution.
 4. The CIM of claim 1wherein the configuration of the set of overall workflow(s) includes:compiling, by the centralized IoT gateway flow computer, the set ofoverall work flow configuration(s).
 5. The CIM of claim 1 wherein theconfiguration of the set of overall workflow(s) includes: optimizing, bythe centralized IoT gateway flow computer, the set of overall work flowconfiguration(s).
 6. The CIM of claim 1 wherein the configuration of theset of overall workflow(s) includes: compiling, by the centralized IoTgateway flow computer, the set of overall work flow configuration(s);and optimizing, by the centralized IoT gateway flow computer, the set ofoverall work flow configuration(s).
 7. A computer program product (CPP)comprising: a machine readable storage device; and computer code storedon the machine readable storage device, with the computer code includinginstructions and data for causing a processor(s) set to performoperations including the following: deploying a hybrid Internet ofThings (IoT) gateway architecture including a plurality of cloudgateways and a plurality of edge gateways, configuring, by a user andthrough a centralized/unified flow engine interface implemented on acentralized IoT gateway flow computer, a set of overall workflow(s) forthe hybrid IoT gateway architecture, assigning, dynamically andautomatically, a set of sub-configuration(s), and deploying, dynamicallyand automatically, the set of sub-configuration(s) to the plurality ofcloud gateways and the plurality of edge gateways.
 8. The CPP of claim 7wherein the dynamic and automatic assignment of the set ofsub-configuration(s) is based on overall topology of the system so thata single centralized IoT gateway flow computer is used to configure allof the cloud gateways and all of the edge gateways in the hybrid IoTgateway architecture.
 9. The CPP of claim 7 wherein the configuration ofthe set of overall workflow(s) includes intelligent configurationdistribution.
 10. The CPP of claim 7 wherein the configuration of theset of overall workflow(s) includes: compiling, by the centralized IoTgateway flow computer, the set of overall work flow configuration(s).11. The CPP of claim 7 wherein the configuration of the set of overallworkflow(s) includes: optimizing, by the centralized IoT gateway flowcomputer, the set of overall work flow configuration(s).
 12. The CPP ofclaim 7 wherein the configuration of the set of overall workflow(s)includes: compiling, by the centralized IoT gateway flow computer, theset of overall work flow configuration(s); and optimizing, by thecentralized IoT gateway flow computer, the set of overall work flowconfiguration(s).
 13. A computer system (CS) comprising: a processor(s)set; a machine readable storage device; and computer code stored on themachine readable storage device, with the computer code includinginstructions and data for causing the processor(s) set to performoperations including the following: deploying a hybrid Internet ofThings (IoT) gateway architecture including a plurality of cloudgateways and a plurality of edge gateways, configuring, by a user andthrough a centralized/unified flow engine interface implemented on acentralized IoT gateway flow computer, a set of overall workflow(s) forthe hybrid IoT gateway architecture, assigning, dynamically andautomatically, a set of sub-configuration(s), and deploying, dynamicallyand automatically, the set of sub-configuration(s) to the plurality ofcloud gateways and the plurality of edge gateways.
 14. The CS of claim13 wherein the dynamic and automatic assignment of the set ofsub-configuration(s) is based on overall topology of the system so thata single centralized IoT gateway flow computer is used to configure allof the cloud gateways and all of the edge gateways in the hybrid IoTgateway architecture.
 15. The CS of claim 13 wherein the configurationof the set of overall workflow(s) includes intelligent configurationdistribution.
 16. The CS of claim 13 wherein the configuration of theset of overall workflow(s) includes: compiling, by the centralized IoTgateway flow computer, the set of overall work flow configuration(s).17. The CS of claim 13 wherein the configuration of the set of overallworkflow(s) includes: optimizing, by the centralized IoT gateway flowcomputer, the set of overall work flow configuration(s).
 18. The CS ofclaim 13 wherein the configuration of the set of overall workflow(s)includes: compiling, by the centralized IoT gateway flow computer, theset of overall work flow configuration(s); and optimizing, by thecentralized IoT gateway flow computer, the set of overall work flowconfiguration(s).